#pragma once

#include <map>
#include <string>
#include <memory>
#include <shared_mutex>
#include <atomic>
#include <unordered_map>
#include "client/RouteInfoUploader.h"
#include "server/RequestProcessor.h"

namespace zeroplus::mq
{
    class BrokerController
    {
    private:
        std::shared_ptr<RequestProcessor> requestProcessor_;
        std::shared_ptr<RouteInfoUploader> routerInfoUploader_;

    public:
        BrokerController(const std::map<std::string, std::string> &uriMap, int brokerId);

        ~BrokerController();

        bool Start();

        bool Stop();
    };
}
